技巧44 无须停止容器,从容器里解绑
使用Docker时,你常常会发现自己打开了一个交互式shell,但是一旦退出shell,容器便会被终止,因为它是容器的主进程。幸运的是,有办法可以做到和一个容器解绑(而且,如果愿意,还可以用 dockerattach
命令再连到容器里)
问题
想要退出一个容器的交互会话,同时不停掉它。
解决方案
使用Docker内置的按键组合从容器里退出。Docker很有建设性地实现了一个不太可能被其他应用使用也不太可能被意外按到的按键组合。
假设我们执行 docker run -t -i -p 9005:80 ubuntu /bin/bash
命令启动了一个容器,然后用 apt-get
安装了一个Nginx Web服务器。我们想通过一个快捷的到localhost:9005的 curl
命令来测试该Web服务器能否在宿主机上被访问到。
先按组合键Ctrl+P然后再按组合键Ctrl+Q。注意,不是3个键一起按!
注意
如果运行容器时带上了 –rm
标志,那么在解绑后一旦容器被终止仍然会被删除,无论是命令执行完毕还是手动把它停掉。
讨论
如技巧2所述,如果我们之前已经启动了一个容器,却忘了在后台启动,本技巧会很有用。如果想检查容器的运行情况或提供一些输入,它还允许用户和容器自由地绑定和解绑。